home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C++ / Applications / PICSee Dust 1.01 / Quaternary Source / StringUtils.c < prev    next >
Text File  |  1995-11-10  |  3KB  |  112 lines

  1. ///--------------------------------------------------------------------------------------
  2. //    StringUtils.c
  3. //
  4. //    Created:    12/17/91 at 12:35:35 AM
  5. //    By:        Tony Myles
  6. //
  7. //    Copyright: © 1991-93 Tony Myles, All rights reserved worldwide.
  8. ///--------------------------------------------------------------------------------------
  9.  
  10.  
  11. #ifndef __MEMORY__
  12. #include <Memory.h>
  13. #endif
  14.  
  15. #ifndef __STRINGUTILS__
  16. #include "StringUtils.h"
  17. #endif
  18.  
  19.  
  20. ///--------------------------------------------------------------------------------------
  21. // PStrCpy
  22. ///--------------------------------------------------------------------------------------
  23.  
  24. void PStrCpy(
  25.     Str255 srcStr,
  26.     Str255 dstStr)
  27. {
  28.     BlockMove(srcStr, dstStr, 1 + srcStr[0]);
  29. }
  30.  
  31.  
  32. ///--------------------------------------------------------------------------------------
  33. // PStrCat
  34. ///--------------------------------------------------------------------------------------
  35.  
  36. void PStrCat(Str255 appendStr, Str255 dstStr) {
  37.     BlockMove(appendStr + 1, dstStr + dstStr[0] + 1, appendStr[0]);
  38.  
  39.     dstStr[0] += appendStr[0];
  40. }
  41.  
  42. // ==========================================================================
  43.  
  44. void PStrPad(Str255 destStr, short padToLen, register char padChar) {
  45.     register short i;
  46.  
  47.     if (padToLen > 255)
  48.         padToLen = 255;
  49.  
  50.     for (i = destStr[0] + 1; i <= padToLen; i++) {
  51.         destStr[i] = padChar;
  52.     }
  53.     destStr[0] = padToLen;
  54. } // END PStrPad
  55.  
  56. // ---------------------------------------------------------------------------
  57.  
  58. void PStrPadCpy(Str255 srcStr, Str255 destStr, short padToLen, register char padChar) {
  59.     register short i;
  60.  
  61.     BlockMove((Ptr)&srcStr[0], (Ptr)&destStr[0], srcStr[0] + 1);
  62.  
  63.     if (padToLen > 255)
  64.         padToLen = 255;
  65.  
  66.     for (i = destStr[0] + 1; i <= padToLen; i++) {
  67.         destStr[i] = padChar;
  68.     }
  69.     destStr[0] = padToLen;
  70. } // END PStrPadCpy
  71.  
  72. // ---------------------------------------------------------------------------
  73. // PStrDelete
  74. // ---------------------------------------------------------------------------
  75.  
  76. // When specifying the starting location, remember to include the length byte
  77. // i.e. to start deleting at first char, use 1 (not 0).
  78.  
  79. void PStrDelete(Str255 srcStr, short start, short length) {
  80.     // Buggy. Fix later
  81.     return;
  82.     if ((start - 1) == srcStr[0])
  83.         srcStr[0]--;    // i.e. delete last char, since we start at last char.
  84.     else {
  85.         srcStr[0] -= length;
  86.         BlockMove(&srcStr[start + length], &srcStr[start], 256 - (start + length));
  87.     }
  88. } // END PStrDelete
  89.  
  90. // ---------------------------------------------------------------------------
  91. // PStrReplaceSuffix
  92. // ---------------------------------------------------------------------------
  93.  
  94. Boolean PStrReplaceSuffix(Str255 searchSuffix, Str255 replaceSuffix, Str255 destStr) {
  95.     Str255 destStrCpy;
  96.     short destStrLen = destStr[0];
  97.     short backwardsOffset;
  98.     Boolean found;
  99.     
  100.     PStrCpy(destStr, destStrCpy);
  101.     backwardsOffset = destStrCpy[0] - searchSuffix[0];
  102.     destStrCpy[backwardsOffset] = searchSuffix[0];
  103.     found = EqualString(searchSuffix, &destStrCpy[backwardsOffset], false, true);
  104.  
  105.     if (found) {
  106.         destStr[0] -= searchSuffix[0];
  107.         PStrCat(replaceSuffix, destStr);
  108.     }
  109.     
  110.     return(found);
  111. } // END PStrReplaceSuffix
  112.